As communication endpoints, including computing devices, are increasingly linked to other endpoints, the use of a variety of techniques for synchronizing data between endpoints has become widespread. Synchronization implementations often include functionality to communicate changes to synchronized data, to communicate new items, to communicate the deletion of items, and so on. Synchronization implementations may also include functionality that minimizes the creation of duplicate items on different endpoints, at least in certain cases.
Many synchronization implementations operate using a “synchronization protocol” that defines characteristics like how data is communicated between endpoints, which data is communicated and when it is communicated, how conflicts are handled when different endpoints modify the same data, and so on.
In some cases, it may be useful for endpoints to communicate using more than one synchronization protocol. Each synchronization protocol may transfer some or all of the same data, but may do so using different operations, different types of communication, and so on, and may provide different benefits. For example, one synchronization protocol may make it possible to synchronize particular data between different endpoints used by a single person. As just one example, and without limitation, such a synchronization protocol might synchronize personal information management (PIM) data by synchronizing each endpoint with a central server or servers. As a result, the single user might be able to access their PIM data on more than one endpoint—they might be able to access, say, their contacts and calendar items on a desktop computer at work, on their home computer, on their mobile phone, and so on. Another exemplary synchronization protocol may make it possible to synchronize the same or other data, say, in a peer-to-peer fashion between different users. When used with PIM data, this other exemplary synchronization protocol may enable users to share contacts, calendar items, and so on, with other people—everyone in the same family might share a set of contacts, for example. While both exemplary synchronization protocols may ultimately synchronize some or all of the same data, they may do so in different ways.
When more than one synchronization protocol is used to transfer the same data, there may be situations where particular pieces of data are transferred, perhaps by both synchronization protocols, and duplicate data is created. For example, while a synchronization protocol may include functionality to minimize the creation of duplicates when data is transferred using just that synchronization protocol, the synchronization protocol may not include functionality to avoid creating duplicate data when another synchronization protocol also synchronizes or transfers the same data.